package servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import entidades.*;
import logica.*;

/**
 * Servlet implementation class ABMEspecialidadesServlet
 */
@WebServlet("/OpcionesAdmin")
public class OpcionesAdmin extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public OpcionesAdmin() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		
		
		HttpSession session = request.getSession(true);	    
		
		Usuario usuarioActual = (Usuario)session.getAttribute("currentSessionUser");
			
		
		if (usuarioActual !=null){
		
		String entradaMenuAdmin = request.getParameter("o");
		int opcion = Integer.parseInt(entradaMenuAdmin);
		switch(opcion){
			case 1://mostrarmenu
				ABMEspecialidadesServlet abm = new ABMEspecialidadesServlet();
				abm.mostrarEspecialidades(response, request);
				request.getRequestDispatcher("ABMEspecialidades.jsp").forward(request, response); //Me voy a la pag que muestra las especialidades
				break;
			case 2://ABMMaterias
				ABMMateriasServlet abmMateria = new ABMMateriasServlet();
				abmMateria.cargarPlanesEspecialidad(request,response );
				abmMateria.cargarMaterias(request, response);
				request.getRequestDispatcher("ABMMaterias.jsp").forward(request, response); //Me voy a ABMMaterias.jsp de nuevo
				break;
			case 3://ABM Personas
				ABMPersonasServlet abmPersona = new ABMPersonasServlet();
				abmPersona.mostrarPersonas(response, request);
				request.getRequestDispatcher("ABMPersonas.jsp").forward(request, response);
				break;
			case 4://Modificar Clave
				request.getRequestDispatcher("ModificarClave.jsp").forward(request, response);
				break;
			case 5: //Se deslogea el usuario
				session.removeAttribute("currentSessionUser"); //borro la session y se deslogea
				request.getRequestDispatcher("PaginaInicio.jsp").forward(request, response); //Me voy a PaginaInicio.jsp de nuevo
				break;
				
			case 6: //ABM CURSOS
				ABMComisionesServlet abmCom = new ABMComisionesServlet();
				abmCom.cargarComisiones(request, response);
				abmCom.cargarPlanesEspecialidad(request,response );
				abmCom.cargarMaterias(request, response);
				request.getRequestDispatcher("ABMComisiones.jsp").forward(request, response); //Me voy a ABMMComisiones.jsp de nuevo
				break;
				
			case 7: //ABM Planes
				ABMPlanesServlet abmPlanes = new ABMPlanesServlet();
				abmPlanes.mostrarPlanes(response, request);
				request.getRequestDispatcher("ABMPlanes.jsp").forward(request, response);
				break;		
				
			/*el primer dos responde al switch 2*/ 
			case 22:// modificar materia
				ABMMateriasServlet abmMateriaModificar = new ABMMateriasServlet();
				
				int idMateria = Integer.parseInt(request.getParameter("idMateriaModificar"));
				abmMateriaModificar.setearMateria(request, response, idMateria);
				request.getRequestDispatcher("ModificarMateria.jsp").forward(request, response); //Me voy a modificarMateria.jsp 
				
				
				break;
			case 23: //eliminara materia
				ABMMateriasServlet abmMateriaEliminar = new ABMMateriasServlet();
				int idMateriaEliminar = Integer.parseInt(request.getParameter("idMateriaEliminar"));
				abmMateriaEliminar.eliminarMateria(request, response, idMateriaEliminar);
				
				break;
			case 24: //IR al jsp agregar materia	
				
				request.getRequestDispatcher("AltaMateria.jsp").forward(request, response);

				break;
			case 62://Modificar Comision
				
				ABMComisionesServlet abmComM = new ABMComisionesServlet();
				int idComision = Integer.parseInt(request.getParameter("idComisionModificar"));
				//System.out.println(idComision);
				abmComM.setearCursoComision(idComision, request, response);
				request.getRequestDispatcher("ModificarComision.jsp").forward(request, response);

				break;
			case 63://eliminar Comisiones
				ABMComisionesServlet abmComE = new ABMComisionesServlet();
				int idComisionE = Integer.parseInt(request.getParameter("idComisionEliminar"));
				
				Curso cursoEliminar = new Curso();
				loCursos cursoLo = new loCursos();
				cursoEliminar = cursoLo.getCursoxComision(idComisionE);
				
				
				if (abmComE.eliminarCurso(cursoEliminar.getId())){
					if (abmComE.eliminarComision(idComisionE)){
						String msg = ("La Comision ha sido eliminado <br/> <b>Redireccionando</b>");
						session.setAttribute("msg", msg);

						}else{
							String msg = ("No se puede eliminar.Existen inscripto <br/> <b>Redireccionando</b>");
							session.setAttribute("msg", msg);

						}
					
					}else{
						String msg = ("No se puede borrar.Curso asociado <br/> <b>Redireccionando</b>");
						session.setAttribute("msg", msg);
					}
				
				session.setAttribute("direccion", "OpcionesAdmin?o=6");
				request.getRequestDispatcher("Mensajes.jsp").forward(request, response);
				
		
		
			break;
			
			case 64:// Agregr Comision
				request.getRequestDispatcher("AltaComision.jsp").forward(request, response);
				
				
				break;
				
				
			
		}	
	
		}else{
			out.println("Error. No logeado");
			response.sendRedirect("Login.jsp");
		}
	
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
PrintWriter out = response.getWriter();
		
		
		HttpSession session = request.getSession(true);	    
		
		Usuario usuarioActual = (Usuario)session.getAttribute("currentSessionUser");
			
		
		if (usuarioActual !=null){
		
		String entradaMenuAdmin = request.getParameter("opcion");
		int opcion = Integer.parseInt(entradaMenuAdmin);
		switch(opcion){
		case 1:// agregar materia
			String hsTotalAString = request.getParameter("hsTotales");
			String hsSemanalesAString = request.getParameter("hsSemanales");
			String nombre = request.getParameter("descripcion");
			String idPlanAString = request.getParameter("idPlan");
			
			
			
			
			ABMMateriasServlet abmMateria = new ABMMateriasServlet();
			if (abmMateria.validarCampos(hsTotalAString, hsSemanalesAString, nombre, idPlanAString)){
			
			int hsSemanales = Integer.parseInt(hsSemanalesAString);
			int hsTotal = Integer.parseInt(hsTotalAString);
			int idPlan = Integer.parseInt(idPlanAString);
			
			abmMateria.agregarMaterias(request, response,  nombre, hsSemanales, hsTotal, idPlan);
			String msg = ("La Materia ha sido Cargada <br/> <b>Redireccionando</b>");
			session.setAttribute("msg", msg);

			}else{
				String msg = ("Error:campos Nulos! <br/> <b>Redireccionando</b>");
				session.setAttribute("msg", msg);

			}

			session.setAttribute("direccion", "OpcionesAdmin?o=2");
			request.getRequestDispatcher("Mensajes.jsp").forward(request, response);
			
			break;
		case 2://modificar materia
			String hsTotalString = request.getParameter("hsTotales");
			String hsSemanalesString = request.getParameter("hsSemanales");
			String nombreM = request.getParameter("descripcion");
			String idPlanString = request.getParameter("idPlan");
			String idMateriaString = request.getParameter("idMateria");

			ABMMateriasServlet abmMateriaM = new ABMMateriasServlet();
			if (abmMateriaM.validarCampos(hsTotalString, hsSemanalesString, nombreM, idPlanString)){//validar campos nulos
				
			
			int hsTotalM = Integer.parseInt(hsTotalString);
			int hsSemanalesM = Integer.parseInt(hsSemanalesString);
			int idPlanM = Integer.parseInt(idPlanString);
			int idMateriaM = Integer.parseInt(idMateriaString);
			
			abmMateriaM.modificarMateria(request, response, idMateriaM, hsSemanalesM, hsTotalM, idPlanM, nombreM);
			//String msgx = ("La Materia ha sido Modificada <br/> <b>Redireccionando</b>");
			//session.setAttribute("msg", msgx);
			//session.setAttribute("direccion", "OpcionesAdmin?o=2");
		
			}else{
				String msgx = ("Error Campos NULOS <br/> <b>Redireccionando</b>");

			session.setAttribute("msg", msgx);
			session.setAttribute("direccion", "OpcionesAdmin?o=2");
			
			}
			request.getRequestDispatcher("Mensajes.jsp").forward(request, response);
			break;
		case 3: //agregar Comision
			String anoAC = request.getParameter("ano");
			String nombreAC = request.getParameter("descripcion");
			
			
			
			
			
			String idMateriaAC = request.getParameter("idMateria");
			String cupoAC = request.getParameter("cupo");
			String anioCalendarioAC = request.getParameter("ano_calendario");
			
			
			
			
			ABMComisionesServlet abmComision = new ABMComisionesServlet();
			
			if (abmComision.validarCampos(anoAC, nombreAC, idMateriaAC,cupoAC,anioCalendarioAC)){
				/*traigo el id plan con la materia*/
				loMaterias loObjMateria = new loMaterias();
				Materia materiaActual = new Materia();
				int id_Materia = Integer.parseInt(idMateriaAC);
				
				materiaActual =  loObjMateria.getMateria(id_Materia);
				/*fin*/
				
				int cupoACINT = Integer.parseInt(cupoAC);
				int anioCalendarioACINT = Integer.parseInt(anioCalendarioAC);
				
				int anoACINT = Integer.parseInt(anoAC);
				int idPlanACINT = materiaActual.getIdPlan();
				abmComision.agregarComision(anoACINT, idPlanACINT, nombreAC);
				loComision comisionU = new loComision();
				int idComision = comisionU.getIdUltimaComision();
				abmComision.agregarCurso(anioCalendarioACINT, cupoACINT, id_Materia, idComision);
				String msg = ("La Comision ha sido Cargada <br/> <b>Redireccionando</b>");
				session.setAttribute("msg", msg);

				}else{
					String msg = ("Error:campos Nulos! <br/> <b>Redireccionando</b>");
					session.setAttribute("msg", msg);

				}

				session.setAttribute("direccion", "OpcionesAdmin?o=6");
				request.getRequestDispatcher("Mensajes.jsp").forward(request, response);
				
				break;
		case 4:

			String anoMC = request.getParameter("ano");
			String nombreMC = request.getParameter("descripcion");
			
			
			
			
			
			String idMateriaMC = request.getParameter("idMateria");
			String cupoMC = request.getParameter("cupo");
			String anioCalendarioMC = request.getParameter("ano_calendario");
			
			
			
			
			ABMComisionesServlet abmComisionM = new ABMComisionesServlet();
			
			if (abmComisionM.validarCampos(anoMC, nombreMC, idMateriaMC,cupoMC,anioCalendarioMC)){
				/*traigo el id plan con la materia*/
				loMaterias loObjMateria = new loMaterias();
				Materia materiaActual = new Materia();
				int id_Materia = Integer.parseInt(idMateriaMC);
				int idComision = Integer.parseInt(request.getParameter("idComision"));

				/*fin*/
				
				int cupoMCINT = Integer.parseInt(cupoMC);
				int anioCalendarioMCINT = Integer.parseInt(anioCalendarioMC);
				
				int anoMCINT = Integer.parseInt(anoMC);
				int idPlanMCINT = materiaActual.getIdPlan();
				abmComisionM.modificarComisionCurso(request, response, idComision, idPlanMCINT, nombreMC, anoMCINT, anioCalendarioMCINT, id_Materia, cupoMCINT);
				
				String msg = ("La Comision ha sido Modificada <br/> <b>Redireccionando</b>");
				session.setAttribute("msg", msg);

				}else{
					String msg = ("Error:campos Nulos! <br/> <b>Redireccionando</b>");
					session.setAttribute("msg", msg);

				}

				session.setAttribute("direccion", "OpcionesAdmin?o=6");
				request.getRequestDispatcher("Mensajes.jsp").forward(request, response);
				
				break;
		
		
		}
	
	
	}
	}
}


